package constant

// 定义各模块错误码的起始值
const (
	// Success 成功码
	Success = 0

	// CommonErrorBase 各模块错误码起始值
	CommonErrorBase  = 1000 * iota // 1000
	UserErrorBase                  // 2000
	CompanyErrorBase               // 3000
	DeptErrorBase                  // 4000
)

// 通用错误码 (1000-1999)
const (
	UnknownError   = CommonErrorBase + iota // 1000 未知错误
	ServerError                             // 1001 服务器内部错误
	InvalidParam                            // 1002 参数无效
	DatabaseError                           // 1003 数据库错误
	NetworkError                            // 1004 网络错误
	Unauthorized                            // 1005 未授权访问
	Forbidden                               // 1006 禁止访问
	NotFound                                // 1007 资源未找到
	RequestTimeout                          // 1008 请求超时
	// 可以继续添加更多通用错误码...
)

// 用户相关错误码 (2000-2999)
const (
	UserNotExists     = UserErrorBase + iota // 2000 用户不存在
	UserAlreadyExists                        // 2001 用户已存在
	InvalidPassword                          // 2002 密码错误
	UserDisabled                             // 2003 用户被禁用
	InvalidToken                             // 2004 无效的token
	TokenExpired                             // 2005 token已过期
	InvalidUsername                          // 2006 无效的用户名
	// 可以继续添加更多用户相关错误码...
)

// 公司相关错误码 (3000-3999)
const (
	CompanyNotExists     = CompanyErrorBase + iota // 3000 公司不存在
	CompanyAlreadyExists                           // 3001 公司已存在
	// 可以继续添加更多公司相关错误码...
)

// 部门相关错误码 (4000-4999)
const (
	DeptNotExists     = DeptErrorBase + iota // 4000 部门不存在
	DeptAlreadyExists                        // 4001 部门已存在
	// 可以继续添加更多部门相关错误码...
)

var errorMsg = map[int]string{
	// 成功码
	Success: "成功",

	// 通用错误码 (1000-1999)
	UnknownError:   "未知错误",
	ServerError:    "服务器内部错误",
	InvalidParam:   "参数无效",
	DatabaseError:  "数据库错误",
	NetworkError:   "网络错误",
	Unauthorized:   "未授权访问",
	Forbidden:      "禁止访问",
	NotFound:       "资源未找到",
	RequestTimeout: "请求超时",

	// 用户相关错误码 (2000-2999)
	UserNotExists:     "用户不存在",
	UserAlreadyExists: "用户已存在",
	InvalidPassword:   "密码错误",
	UserDisabled:      "用户被禁用",
	InvalidToken:      "无效的token",
	TokenExpired:      "token已过期",
	InvalidUsername:   "无效的用户名",

	// 公司相关错误码 (3000-3999)
	CompanyNotExists:     "公司不存在",
	CompanyAlreadyExists: "公司已存在",

	// 部门相关错误码 (4000-4999)
	DeptNotExists:     "部门不存在",
	DeptAlreadyExists: "部门已存在",
}

// GetErrorMsg 根据错误码获取错误信息
func GetErrorMsg(code int) string {
	if msg, ok := errorMsg[code]; ok {
		return msg
	}
	return "未知错误"
}
